#ifndef __LINKTREE_H_
#define __LINKTREE_H_
#define ElementType char*
typedef struct TreeNode
{
    ElementType data;
    struct TreeNode *parent;
    struct TreeNode *firstchild;
    struct TreeNode *nextsbiling;
}TNode;

TNode *CreateTreeNode(ElementType element);//创建节点
void ConnectBranch(TNode *parent,TNode *child);//头插法将链表连接
void DisConnectBranch(TNode *parent,TNode *child);//将child从无序树上卸下来

typedef struct LinkTree
{
    TNode *root;
}LTree;

int InitLinkTree(LTree *tree);//初始化无序树
void FreeLinkTree(LTree *tree);//无序树的内存释放
int GetLinkTreeHeight(TNode *node);//获取该节点下的高度
int GetChildCount(TNode *node);//获取该节点的度
void TravelLinkTree(LTree *tree);//遍历该无序树并输出（深度遍历）
TNode *FindNode(TNode *node,ElementType data,int (*p)(ElementType,ElementType));//寻找与data相匹配的节点（回调函数）
TNode *CopyLinkTree(TNode *node);//将无序树再复制一个（由于是头插法复制，该树与原树对称）

#endif